package org.cg.entidade.estado;

import org.apache.log4j.Logger;
import org.cg.gestor.Gestores;
import org.cg.entidade.Coelho;
import org.cg.entidade.Entidade;

public class EstadoCoelho implements IEstado {

	private static Logger logger = Logger.getLogger(EstadoCoelho.class);
	
	public void update(Entidade entidade) {
		Coelho coelho = (Coelho)entidade;
		
		logger.info(" --- INICIO de update EstadoCoelho --- ");
		logger.info("Tem " + coelho.getEnergia());
		logger.info("Esta na " + coelho.getPosicao());
		
		if (!coelho.getEnergia().estaVivo()) {							//nao esta vivo
			logger.info("Vai passar a EstadoMorte.");
			coelho.mudarEstado(new EstadoMorte());						//coitadinho ja morreu :(
			
		} else if (!coelho.getEnergia().ultrapassouLimite()) { 			//esta vivo e com fome
			logger.info("Vai passar a EstadoCoelhoComFome.");
			coelho.mudarEstado(new EstadoCoelhoComFome());				//mudar estado c/fome
				
		} else { 														//esta vivo e nao esta com fome
			logger.info("Vai deslocar-se.");
			Gestores.getGestorColisao().setDireccoesValidas(coelho);	//validar colisoes com outras entidades
			Gestores.getGestorMovimento().moverCoelho(coelho);			//mover o coelho
			coelho.getEnergia().decrementar();							//decrementar energia
			logger.info("Vai decrementar energia.");
		}
		
		logger.info("Ficou na " + coelho.getPosicao());
		logger.info("Ficou com " + coelho.getEnergia());
		logger.info(" --- FIM de update EstadoCoelho --- ");
	}

}
